import { http } from "@/utils/http";
import type {
  GroupedNotification,
  GroupedNotificationQuery,
  NotificationDetailItem,
  GroupedDetailQuery,
  MarkGroupReadParams
} from "@/types/notification-grouped";

/** 统一响应格式 */
export interface ApiResponse<T = any> {
  /** 状态码 */
  code: number;
  /** 响应消息 */
  message: string;
  /** 响应数据 */
  data?: T;
}

/** 分页响应格式 */
export interface PageResponse<T> {
  /** 记录列表 */
  records: T[];
  /** 总记录数 */
  total: number;
  /** 每页大小 */
  size: number;
  /** 当前页码 */
  current: number;
  /** 总页数 */
  pages: number;
}

/**
 * 分页查询聚合通知列表
 * @param params 查询参数
 */
export const getGroupedNotificationsApi = (
  params: GroupedNotificationQuery
) => {
  return http.request<ApiResponse<PageResponse<GroupedNotification>>>(
    "get",
    "/api/notifications/grouped",
    { params }
  );
};

/**
 * 获取指定分组的通知详情列表
 * @param params 查询参数
 */
export const getGroupedNotificationDetailsApi = (
  params: GroupedDetailQuery
) => {
  return http.request<ApiResponse<NotificationDetailItem[]>>(
    "get",
    "/api/notifications/grouped/details",
    { params }
  );
};

/**
 * 标记指定分组的所有通知为已读
 * @param params 标记参数
 */
export const markGroupedNotificationsAsReadApi = (
  params: MarkGroupReadParams
) => {
  return http.request<ApiResponse>(
    "put",
    "/api/notifications/grouped/mark-read",
    { params }
  );
};
